// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// VMOptions=
// VMOptions=--short_socket_read
// VMOptions=--short_socket_write
// VMOptions=--short_socket_read --short_socket_write

import "dart:async";
import "dart:io";

import "package:expect/async_helper.dart";
import "package:expect/expect.dart";

void main() {
  asyncStart();
  Duration timeout = new Duration(milliseconds: 20);
  Socket.startConnect("8.8.8.7", 80).then((task) {
    task.socket.timeout(
      timeout,
      onTimeout: () {
        task.cancel();
        return task.socket;
      },
    );
    task.socket
        .then((socket) {
          Expect.fail("Unexpected connection made.");
          asyncEnd();
        })
        .catchError((e) {
          print(e);
          Expect.isTrue(e is SocketException);
          asyncEnd();
        });
  });
}
